/**
 */
package org.mro.grib.model.files.secondEdition.sections;

import java.nio.ByteBuffer;

import org.eclipse.emf.ecore.EObject;
import org.mro.grib.core.GribException;
import org.mro.grib.core.SectionException;
import org.mro.grib.model.files.secondEdition.grids.IGridDefinition;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Grid Definition Section</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getStartOffset <em>Start Offset</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getEndOffset <em>End Offset</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getLength <em>Length</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getSourceOfGridDefinition <em>Source Of Grid Definition</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getNumberOfDataPoints <em>Number Of Data Points</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getNumberOfOctetsForOptionalListOfNumbers <em>Number Of Octets For Optional List Of Numbers</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getInterpretationOfListOfNumbers <em>Interpretation Of List Of Numbers</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getGridDefinitionTemplateNumber <em>Grid Definition Template Number</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getGridDefinitionTemplate <em>Grid Definition Template</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.mro.grib.model.files.secondEdition.sections.SectionsPackage#getGridDefinitionSection()
 * @model annotation="http://www.eclipse.org/emf/2002/GenModel description_en='Section 3 \u2013 Grid definition section' regulation_92.5.1_en='Regulations 92.3.1 and 92.3.2 shall apply.' note_1_en='If octet 6 is not zero, octets 15\u2013xx (15\u2013nn if octet 11 is zero) may not be supplied. This should be documented with all\r\nbits set to 1 (missing value) in the grid definition template number.' note_2_en='An optional list of numbers may be used to document a quasi-regular grid. In such a case, octet 11 is non zero and gives\r\nthe number of octets used per item on the list. For all other cases, such as regular grids, octets 11 and 12 are zero and\r\nno list is appended to the grid definition template.' note_3_en='If a list of numbers defining number of points is present, it is appended at the end of the grid definition template (or directly\r\nafter the grid definition template number if the template is missing), the length of the list is given by the grid definition.\r\nWhen the grid definition template is present, the length is given according to bit 3 of scanning mode flag octet (length is\r\nNj or Ny for flag value 0). List ordering is implied by data scanning.' note_4_en='Depending on code value given in octet 12, the list of numbers either:\r\n\u2013 corresponds to the coordinate lines as given in the grid definition, or\r\n\u2013 corresponds to a full circle, or\r\n\u2013 does not apply.'"
 * @generated
 */
public interface GridDefinitionSection extends EObject {
	/**
	 * Returns the value of the '<em><b>Start Offset</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Start Offset</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Start Offset</em>' attribute.
	 * @see #setStartOffset(long)
	 * @see org.mro.grib.model.files.secondEdition.sections.SectionsPackage#getGridDefinitionSection_StartOffset()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Start offset' description_en='Section start offset'"
	 * @generated
	 */
	long getStartOffset();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getStartOffset <em>Start Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Start Offset</em>' attribute.
	 * @see #getStartOffset()
	 * @generated
	 */
	void setStartOffset(long value);

	/**
	 * Returns the value of the '<em><b>End Offset</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>End Offset</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>End Offset</em>' attribute.
	 * @see #setEndOffset(long)
	 * @see org.mro.grib.model.files.secondEdition.sections.SectionsPackage#getGridDefinitionSection_EndOffset()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='End offset' description_en='Section end offset'"
	 * @generated
	 */
	long getEndOffset();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getEndOffset <em>End Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>End Offset</em>' attribute.
	 * @see #getEndOffset()
	 * @generated
	 */
	void setEndOffset(long value);

	/**
	 * Returns the value of the '<em><b>Length</b></em>' attribute.
	 * The default value is <code>"0"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Length</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Length</em>' attribute.
	 * @see #setLength(int)
	 * @see org.mro.grib.model.files.secondEdition.sections.SectionsPackage#getGridDefinitionSection_Length()
	 * @model default="0" required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Length' description_en='Section length'"
	 * @generated
	 */
	int getLength();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getLength <em>Length</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Length</em>' attribute.
	 * @see #getLength()
	 * @generated
	 */
	void setLength(int value);

	/**
	 * Returns the value of the '<em><b>Source Of Grid Definition</b></em>' attribute.
	 * The default value is <code>"0"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Source Of Grid Definition</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Source Of Grid Definition</em>' attribute.
	 * @see #setSourceOfGridDefinition(byte)
	 * @see org.mro.grib.model.files.secondEdition.sections.SectionsPackage#getGridDefinitionSection_SourceOfGridDefinition()
	 * @model default="0" required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Source of grid definition' description_en='Source of grid definition (see Code table 3.0 and Note 1)'"
	 * @generated
	 */
	byte getSourceOfGridDefinition();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getSourceOfGridDefinition <em>Source Of Grid Definition</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Source Of Grid Definition</em>' attribute.
	 * @see #getSourceOfGridDefinition()
	 * @generated
	 */
	void setSourceOfGridDefinition(byte value);

	/**
	 * Returns the value of the '<em><b>Number Of Data Points</b></em>' attribute.
	 * The default value is <code>"0"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Number Of Data Points</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Number Of Data Points</em>' attribute.
	 * @see #setNumberOfDataPoints(int)
	 * @see org.mro.grib.model.files.secondEdition.sections.SectionsPackage#getGridDefinitionSection_NumberOfDataPoints()
	 * @model default="0" required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Number of data points' description_en='Number of data points'"
	 * @generated
	 */
	int getNumberOfDataPoints();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getNumberOfDataPoints <em>Number Of Data Points</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Number Of Data Points</em>' attribute.
	 * @see #getNumberOfDataPoints()
	 * @generated
	 */
	void setNumberOfDataPoints(int value);

	/**
	 * Returns the value of the '<em><b>Number Of Octets For Optional List Of Numbers</b></em>' attribute.
	 * The default value is <code>"0"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Number Of Octets For Optional List Of Numbers</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Number Of Octets For Optional List Of Numbers</em>' attribute.
	 * @see #setNumberOfOctetsForOptionalListOfNumbers(byte)
	 * @see org.mro.grib.model.files.secondEdition.sections.SectionsPackage#getGridDefinitionSection_NumberOfOctetsForOptionalListOfNumbers()
	 * @model default="0" required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Number of octets for optional list of numbers' description_en='Number of octets for optional list of numbers (see Note 2)'"
	 * @generated
	 */
	byte getNumberOfOctetsForOptionalListOfNumbers();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getNumberOfOctetsForOptionalListOfNumbers <em>Number Of Octets For Optional List Of Numbers</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Number Of Octets For Optional List Of Numbers</em>' attribute.
	 * @see #getNumberOfOctetsForOptionalListOfNumbers()
	 * @generated
	 */
	void setNumberOfOctetsForOptionalListOfNumbers(byte value);

	/**
	 * Returns the value of the '<em><b>Interpretation Of List Of Numbers</b></em>' attribute.
	 * The default value is <code>"0"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Interpretation Of List Of Numbers</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Interpretation Of List Of Numbers</em>' attribute.
	 * @see #setInterpretationOfListOfNumbers(byte)
	 * @see org.mro.grib.model.files.secondEdition.sections.SectionsPackage#getGridDefinitionSection_InterpretationOfListOfNumbers()
	 * @model default="0" required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Interpretation of list of numbers' description_en='Interpretation of list of numbers (see Code table 3.11)'"
	 * @generated
	 */
	byte getInterpretationOfListOfNumbers();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getInterpretationOfListOfNumbers <em>Interpretation Of List Of Numbers</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Interpretation Of List Of Numbers</em>' attribute.
	 * @see #getInterpretationOfListOfNumbers()
	 * @generated
	 */
	void setInterpretationOfListOfNumbers(byte value);

	/**
	 * Returns the value of the '<em><b>Grid Definition Template Number</b></em>' attribute.
	 * The default value is <code>"0"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Grid Definition Template Number</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Grid Definition Template Number</em>' attribute.
	 * @see #setGridDefinitionTemplateNumber(short)
	 * @see org.mro.grib.model.files.secondEdition.sections.SectionsPackage#getGridDefinitionSection_GridDefinitionTemplateNumber()
	 * @model default="0" required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Grid definition template number' description_en='Grid definition template number (= N) (see Code table 3.1)'"
	 * @generated
	 */
	short getGridDefinitionTemplateNumber();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getGridDefinitionTemplateNumber <em>Grid Definition Template Number</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Grid Definition Template Number</em>' attribute.
	 * @see #getGridDefinitionTemplateNumber()
	 * @generated
	 */
	void setGridDefinitionTemplateNumber(short value);

	/**
	 * Returns the value of the '<em><b>Grid Definition Template</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Grid Definition Template</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Grid Definition Template</em>' containment reference.
	 * @see #setGridDefinitionTemplate(IGridDefinition)
	 * @see org.mro.grib.model.files.secondEdition.sections.SectionsPackage#getGridDefinitionSection_GridDefinitionTemplate()
	 * @model containment="true" required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Grid Definition' description_en='Length of the section'"
	 * @generated
	 */
	IGridDefinition getGridDefinitionTemplate();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection#getGridDefinitionTemplate <em>Grid Definition Template</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Grid Definition Template</em>' containment reference.
	 * @see #getGridDefinitionTemplate()
	 * @generated
	 */
	void setGridDefinitionTemplate(IGridDefinition value);

	/**
	 * 
	 * @param buffer
	 * @throws GribException 
	 */
	void initialise(ByteBuffer buffer) throws SectionException;
	
} // GridDefinitionSection
